
// 引入vue-router插件并进行全局插件注册
import Vue from 'vue'
import Router from 'vue-router'

Vue.use(Router)

// 需要引入全局的store实例对象用于获取store中的token数据
import store from '../store'

// 页面组件引入
import LoginNode from '../views/login'
import HomeNode from '../views/home'
import MaterialList from '../views/material'
import MaterialEdit from '../views/material/Edit.vue'
import ProjectList from '../views/project/index.vue'
import ProjectEdit from '../views/project/Edit.vue'
import purchaseList from '../views/purchase/index.vue'



// 路由实例化，并进行路由的配置
const router = new Router({
   /*  mode: 'history', */
    routes: [
        // 在系统中一定要有一个默认路由的重定向，可以减少用户的地址输入难度
        {path: '/', redirect: '/login'},
        // 如果一个页面不需要登录就可以进行访问，需要在meta中添加一个unrequireLogin属性来标明
        {path: '/login', component: LoginNode, meta: {unrequireLogin: true}},
        {path: '/home', component: HomeNode},
        {path:'/material',component:MaterialList},
        {path:'/material/edit',component:MaterialEdit},
        {path:'/project/list', component:ProjectList},
        {path:'/project/edit',component:ProjectEdit},
        {path:'/purchase/list',component:purchaseList}
    ]
})

// 使用路由钩子函数(导航卫士)来实现全局路由权限(页面的访问权限--一定要登录以后才能访问，查询token是否存在)拦截
// to 是一个route对象
router.beforeEach((to, from, next) => {
    // 执行路由拦截代码实现
    // 可以使用meta来传递一个参数，标明此路由是否要求用户登录以后才能进行访问
    if (to.meta.unrequireLogin) {
        next()
    } else {
        console.log('+++++++++++++++++++++++++++++++ 路由拦截实现');
        // 读取token数据
        let token = store.getters['common/token']
        // 如果token为空，或不存在，重定向到登录页面
        if (!!token) {
            //放行的意思，放行到home页面，其他页面等
            next()
        } else {
            next('/login')
        }
    }
})

export default router